package br.com.ufc.contoller;

import br.com.ufc.model.TarefaTO;
import br.com.ufc.exception.BusinessException;
import br.com.ufc.exception.IntegrationException;
import br.com.ufc.model.Tarefa;

public interface Agendavel {

	Tarefa consultarTarefaPorCodigo(Long codigo) throws IntegrationException;

	Tarefa consultarTarefa(Long codigo) throws IntegrationException;
	
	TarefaTO listarTarefas(); 
	
	Boolean cadastrarTarefa(Tarefa t);

	Boolean encerrarTodasTarefas();

	Boolean encerrarTarefa(Tarefa t, Double valorCobrado);
        
        void encerrarTarefa(Long codigo, Double valorCobrado) throws IntegrationException;
        
        void cancelarTarefa(Long codigo) throws IntegrationException;
	
	Boolean removerTarefa(Tarefa t);
        
        void removerTarefa(Long codigo) throws IntegrationException;

	Boolean iniciarTarefa(Tarefa t);
        
        void iniciarTarefa(Long codigo) throws IntegrationException;

	Boolean cancelarTarefa(Tarefa t);
	
	Boolean reiniciarTarefa(Tarefa t) throws BusinessException;
        
        void reiniciarTarefa(Long codigo) throws IntegrationException;
	
	void incrementarImportancia(Tarefa t);

	void setTarefas(Integer tamanhoArray);

}
